/*
 * Terminador.h
 *
 */

#ifndef TERMINADOR_H_
#define TERMINADOR_H_

#include <sys/wait.h>
#include <list>
#include "Seniales/SignalHandler.h"
#include "Utils.h"
#include "Log.h"

using namespace std;

class Terminador : public EventHandler {

private:

	int tiempo;
	bool seguirEjecutando;
	bool enEjecucion;
	bool error;
	pid_t pidAscensor;
	pid_t pidControlador;
	list<pid_t> pidPisos;

	void terminar();
	void exterminar();

public:

	Terminador( int tiempo );
	virtual ~Terminador();
	int handleSignal ( int signum );
	void ejecutar();
	void setPidAscensor( pid_t pidAscensor );
	pid_t getPidAscensor() const;
	void setPidControlador( pid_t pidControlador );
	pid_t getPidControlador() const;
	void agregarPidPiso( pid_t pidPiso );

};

#endif /* TERMINADOR_H_ */
